/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ec.dmz.seguridad.ejb.model;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 *
 * @author Estiwar
 */
@Entity
@Table(name = "sigugp.sg_entidad")
@NamedQueries({
    @NamedQuery(name = "Entidad.findAll", query = "SELECT e FROM Entidad e")})
public class Entidad implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "ent_codigo")
    private Integer entCodigo;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 30)
    @Column(name = "ent_nombrecorto")
    private String entNombrecorto;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 100)
    @Column(name = "ent_descripcion")
    private String entDescripcion;
    @Size(max = 100)
    @Column(name = "ent_logo")
    private String entLogo;
    @Basic(optional = false)
    @NotNull
    @Column(name = "ent_nivel")
    private short entNivel;
    @Basic(optional = false)
    @NotNull
    @Column(name = "ent_orden")
    private short entOrden;
    @Basic(optional = false)
    @NotNull
    @Column(name = "ent_estado")
    private short entEstado;
    @Basic(optional = false)
    @NotNull
    @Column(name = "ent_fecharegistro")
    @Temporal(TemporalType.TIMESTAMP)
    private Date entFecharegistro;
    @OneToMany(mappedBy = "entCodigo")
    private List<UsuarioPerfil> usuarioPerfilList;
    @OneToMany(mappedBy = "entCodigopadre")
    private List<Entidad> entidadList;
    @JoinColumn(name = "ent_codigopadre", referencedColumnName = "ent_codigo")
    @ManyToOne
    private Entidad entCodigopadre;

    public Entidad() {
    }

    public Entidad(Integer entCodigo) {
        this.entCodigo = entCodigo;
    }

    public Entidad(Integer entCodigo, String entNombrecorto, String entDescripcion, short entNivel, short entOrden, short entEstado, Date entFecharegistro) {
        this.entCodigo = entCodigo;
        this.entNombrecorto = entNombrecorto;
        this.entDescripcion = entDescripcion;
        this.entNivel = entNivel;
        this.entOrden = entOrden;
        this.entEstado = entEstado;
        this.entFecharegistro = entFecharegistro;
    }

    public Integer getEntCodigo() {
        return entCodigo;
    }

    public void setEntCodigo(Integer entCodigo) {
        this.entCodigo = entCodigo;
    }

    public String getEntNombrecorto() {
        return entNombrecorto;
    }

    public void setEntNombrecorto(String entNombrecorto) {
        this.entNombrecorto = entNombrecorto;
    }

    public String getEntDescripcion() {
        return entDescripcion;
    }

    public void setEntDescripcion(String entDescripcion) {
        this.entDescripcion = entDescripcion;
    }

    public String getEntLogo() {
        return entLogo;
    }

    public void setEntLogo(String entLogo) {
        this.entLogo = entLogo;
    }

    public short getEntNivel() {
        return entNivel;
    }

    public void setEntNivel(short entNivel) {
        this.entNivel = entNivel;
    }

    public short getEntOrden() {
        return entOrden;
    }

    public void setEntOrden(short entOrden) {
        this.entOrden = entOrden;
    }

    public short getEntEstado() {
        return entEstado;
    }

    public void setEntEstado(short entEstado) {
        this.entEstado = entEstado;
    }

    public Date getEntFecharegistro() {
        return entFecharegistro;
    }

    public void setEntFecharegistro(Date entFecharegistro) {
        this.entFecharegistro = entFecharegistro;
    }

    public List<UsuarioPerfil> getUsuarioPerfilList() {
        return usuarioPerfilList;
    }

    public void setUsuarioPerfilList(List<UsuarioPerfil> usuarioPerfilList) {
        this.usuarioPerfilList = usuarioPerfilList;
    }

    public List<Entidad> getEntidadList() {
        return entidadList;
    }

    public void setEntidadList(List<Entidad> entidadList) {
        this.entidadList = entidadList;
    }

    public Entidad getEntCodigopadre() {
        return entCodigopadre;
    }

    public void setEntCodigopadre(Entidad entCodigopadre) {
        this.entCodigopadre = entCodigopadre;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (entCodigo != null ? entCodigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Entidad)) {
            return false;
        }
        Entidad other = (Entidad) object;
        if ((this.entCodigo == null && other.entCodigo != null) || (this.entCodigo != null && !this.entCodigo.equals(other.entCodigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "ec.dmz.seguridad.ejb.model.Entidad[ entCodigo=" + entCodigo + " ]";
    }
    
}
